home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Pier Shareware 1
/
Pier Shareware 1.iso
/
007a
/
courspas.exe
/
CHAP12.EXE
/
LISTE2.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1991-01-06
|
3KB
|
129 lines
program DemoListes2; {LISTE2.PAS}
uses
crt; { unité de Turbo Pascal 6 }
type
pointeur = ^person;
person = record
nom : string;
suivant: pointeur;
end;
var
origine,p1,p2: pointeur;
{------------------------------------------------}
{ saisie_liste }
{------------------------------------------------}
procedure saisie_liste;
begin
clrscr;
origine:= nil;
new(p1);
p1^.suivant:= origine;
origine:=p1;
write('Introduisez les noms constituant la liste, ');
writeln('(<CR> pour la clore).');
writeln;
write('Nom: ');
readln(p1^.nom);
writeln;
if p1^.nom <> '' then
begin
new(p2);
write('Nom: ');
readln(p2^.nom);
writeln;
while p2^.nom <> '' do
begin
p2^.suivant:= nil; {pointeur suivant sur NIL}
p1^.suivant:= p2;
p1:= p2;
new(p2);
write('Nom: ');
readln(p2^.nom);
writeln;
end; { while }
end; { if }
end;
{------------------------------------------------}
{ afficher_liste }
{------------------------------------------------}
procedure afficher_liste;
begin
clrscr;
writeln('Liste des noms saisis:');
writeln;
p1:=origine;
while p1 <> nil do
begin
writeln(p1^.nom);
p1:=p1^.suivant;
end;
writeln('Veuillez frapper <CR>');
readln;
end;
{------------------------------------------------}
{ suppress_element }
{------------------------------------------------}
procedure suppress_element;
var
nom: string;
begin
writeln('Veuillez frapper le nom que vous désirez supprimer: ');
readln(nom);
repeat;
p1:=origine;
if p1^.nom=nom then origine:=p1^.suivant;
until (p1^.nom <>nom) or (p1^.suivant = nil);
while p1<>nil do
begin
p2:=p1^.suivant;
if p2^.nom = nom
then begin
p2:=p2^.suivant;
p1^.suivant:=p2;
end
else p1:=p2;
end;
end;
{------------------------------------------------}
{ insert_element }
{------------------------------------------------}
procedure insert_element;
var
nom1,nom2: string;
begin
write('Veuillez frapper le nom que vous désirez insérer : ');
readln (nom1);
writeln;
writeln('et celui derrière lequel il doit figurer : ');
readln(nom2);
p1:=origine;
while p1 <> nil do
begin
if p1^.nom=nom2 then
begin
new(p2);
p2^.nom:=nom1;
p2^.suivant:=p1^.suivant;
p1^.suivant:=p2;
dispose(p2);
end; { if }
p1:=p1^.suivant;
end; { while }
end;
{------------------------------------------------}
begin { programme principal }
saisie_liste;
afficher_liste;
suppress_element;
afficher_liste;
insert_element;
afficher_liste;
end.